import type { CompanyDetailRequest, CompanyDetailResponse, CompanyListQuery, CompanyListResponse, CompanyOptionsResponse, CreateOrUpdateCompanyRequest, CreateOrUpdateCompanyResponse } from "./type"
import { request } from "@/http/axios"

/**
 * 获取公司列表
 * @param params 查询参数
 * @returns 公司分页列表
 */
export function getCompanyListApi(params: CompanyListQuery) {
  return request<CompanyListResponse>({
    url: "/company/page",
    method: "post",
    data: params
  })
}

/**
 * 获取公司选项数据（工作城市、公司类型、公司规模）
 * @returns 选项数据
 */
export function getCompanyOptionsApi() {
  return request<CompanyOptionsResponse>({
    url: "/company/options",
    method: "get"
  })
}

/**
 * 获取公司详情
 * @param params 公司ID参数
 * @returns 公司详情
 */
export function getCompanyDetailApi(params: CompanyDetailRequest) {
  return request<CompanyDetailResponse>({
    url: `/company/detail/${params.companyId}`,
    method: "get"
  })
}

/**
 * 获取公司信息用于更新
 * @param companyId 公司ID
 * @returns 公司更新数据
 */
export function getCompanyForUpdateApi(companyId: number) {
  return request<ApiResponseData<CreateOrUpdateCompanyRequest>>({
    url: `/company/get-for-update/${companyId}`,
    method: "get"
  })
}

/**
 * 创建公司
 * @param data 公司创建数据
 * @returns 创建结果
 */
export function createCompanyApi(data: CreateOrUpdateCompanyRequest) {
  return request<CreateOrUpdateCompanyResponse>({
    url: "/company/add",
    method: "post",
    data
  })
}

/**
 * 更新公司
 * @param data 公司更新数据
 * @returns 更新结果
 */
export function updateCompanyApi(data: CreateOrUpdateCompanyRequest) {
  return request<CreateOrUpdateCompanyResponse>({
    url: "/company/update",
    method: "put",
    data
  })
}

/**
 * 删除公司
 * @param companyId 公司ID
 * @returns 删除结果
 */
export function deleteCompanyApi(companyId: number) {
  return request<CreateOrUpdateCompanyResponse>({
    url: `/company/delete/${companyId}`,
    method: "delete"
  })
}

/**
 * 上传文件（通用接口）
 * @param params 上传参数
 * @returns 上传结果
 */
export function uploadFileApi(params: {
  file: File
  businessId: number
  businessType: number
}) {
  console.log("uploadFileApi 被调用，使用 URL: /file/upload")
  const formData = new FormData()
  formData.append("file", params.file)
  formData.append("businessId", params.businessId.toString())
  formData.append("businessType", params.businessType.toString())
  return request<ApiResponseData<string>>({
    url: "/file/upload",
    method: "post",
    headers: {
      "Content-Type": "multipart/form-data"
    },
    data: formData
  })
}

/**
 * 上传营业执照（使用通用上传接口）
 * @param file 文件对象
 * @param businessId 业务ID（公司ID或0表示新增）
 * @returns 上传结果
 */
export function uploadLicenseApi(file: File, businessId: number = 0) {
  // 业务类型1可以表示公司营业执照，具体值根据后端定义调整
  const businessType = 1
  console.log("uploadLicenseApi 被调用，businessId:", businessId)
  return uploadFileApi({ file, businessId, businessType })
}
